/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2008，所有权利保留。
 * 
 * 项目名：	rumba-web
 * 文件名：	AbstractConverter.java
 * 模块说明：	
 * 修改历史：
 * May 18, 2008 - zhangyanbo - 创建。
 */
package com.hd123.rumba.gwt.base.server;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.hd123.rumba.exception.BusinessException;

/**
 * @author zhangyanbo
 * 
 */
public abstract class AbstractConverter<S, T> implements IEntityConverter<S, T> {

  public abstract T convert(S source) throws BusinessException;

  public List<T> convert(Collection<S> sources) throws BusinessException {
    List<T> targets = new ArrayList<T>();
    for (S so : sources)
      targets.add(convert(so));
    return targets;
  }

  /**
   * 转换日期类型。java.sql.Timestamp序列化给gwt会出错，因此提供此方法。
   * 
   * @param source
   * @return
   * @throws BusinessException
   */
  public static Date convertDate(Date source) throws BusinessException {
    if (source == null)
      return null;
    return new Date(source.getTime());
  }
}
